#-*- coding: utf-8 -*-

class IS_YEAR:
	def __call__(self, val):
		if val.isdigit():
			val=int(val)
			if val>1000 and val<5000:
				return(val, None)
		return(val, "Niepoprawny rok")


db.define_table("rodzaje_grantow",
      SQLField("nazwa", "string", unique=True, notnull=True, required=True),
)

db.define_table("granty",
      SQLField("kierownik", db.pracownicy, notnull=True, required=True),
      SQLField("nr_decyzji", "string", label="Nr decyzji" ,notnull=True, required=True, unique=True,requires=IS_NOT_EMPTY(error_message='Wymagane pole')),
      SQLField("rodzaj", db.rodzaje_grantow, notnull=True, required=True),
      SQLField("temat", "string", length=160, notnull=True, required=True,requires=IS_FIRST_UPPER()),
      SQLField("kwota", "double", notnull=True, required=True ),
      SQLField("rok_przyznania", "integer", label="Rok przyznania" ,notnull=True, required=True, requires=IS_YEAR()),
      SQLField("rok_zakonczenia", "integer", label="Rok zakończenia", notnull=True, required=True, requires=IS_YEAR() ),
)


db.define_table("granty_pracownicy",
      SQLField("id_grant", db.granty, notnull=True, required=True),
      SQLField("id_pracownik", db.pracownicy, notnull=True, required=True),
)

def wez_temat(record):
	return record.temat

db.granty_pracownicy.id_grant.requires=ProfessorsIS_IN_DB(db, 'granty.id',map=wez_temat)
db.granty_pracownicy.id_pracownik.requires=ProfessorsIS_IN_DB(db, 'pracownicy.id',map=wez_imie_nazwisko)

db.granty.kierownik.requires=ProfessorsIS_IN_DB(db, 'pracownicy.id',map=(lambda x: ['',wez_imie_nazwisko(x)][x.id>1]))
db.granty.rodzaj.requires=IS_IN_DB(db, 'rodzaje_grantow.id','rodzaje_grantow.nazwa')




